package com.hb.trade.server.project.notice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hb.core.pojo.project.notice.dto.NoticeDTO;
import com.hb.core.pojo.project.notice.dto.NoticeListDTO;
import com.hb.core.pojo.project.notice.dto.NoticePortalDTO;
import com.hb.core.pojo.project.notice.entity.Notice;

import java.util.List;

/**
 * <p>
 * 公告信息表 服务类
 * </p>
 *
 * @author zhaojk
 * @since 2021-08-30
 */
public interface NoticeService extends IService<Notice> {

    List<Notice> findNoticeBySectionId(Long sectionId, Integer noticeNature);

    /**
     * 查询指定标段的公告性质
     *
     * @param sectionIds
     * @param noticeNature
     * @return
     */
    List<Notice> findNoticeBySectionIds(List<Long> sectionIds, Integer noticeNature);

    /**
     * 查询跟指定标段相关的所有公告
     *
     * @param notice
     * @return
     */
    Page<NoticeDTO> listNoticeBySection(NoticeDTO notice);

    /**
     * 查询跟指定项目下的所有标段有关系的公告
     *
     * @param noticeDTO #projectId 项目ID
     * @return
     */
    Page<NoticeDTO> pageNoticeByProjectId(NoticeDTO noticeDTO);

    /**
     * 查询指定标段ID的公告分页信息
     *
     * @param noticeDTO
     * @return
     * @update zhaojk
     */
    Page<Notice> pageNoticeBySectionId(NoticeDTO noticeDTO);

    /**
     * @param sectionId:
     * @Description: 查询标段最后一次发布的公告(除了控制价公告以外)
     * @Author: zhongdl
     * @Date:2021/12/21 16:36
     * @return: {@link Notice }
     **/
    Notice lastNoticeBySectionId(Long sectionId);

    /**
     * 根据项目名称，项目类型（工程服务货物）和公告性质查询公告
     *
     * @param noticePortalDTO
     * @return
     */
    Page<NoticePortalDTO> pageNotice(NoticePortalDTO noticePortalDTO);

    /**
     * 根据noticeId查询公告正文（关联项目表）
     *
     * @param noticePortalDTO
     * @return
     */
    NoticePortalDTO findNoticeByNoticeId(NoticePortalDTO noticePortalDTO);

    /**
     * @Description: 查询所需要推送的公告
     * @Author: zhongdl
     * @Date:2022/2/23 9:24
     **/
    List<NoticeDTO> listPushNotice();

    /**
     * @Description: 根据标段Id查询公告列表
     *
     * @author yuezheng
     * @param noticeListDTO
     * @return java.util.List<com.hb.core.pojo.project.notice.entity.Notice>
     * @date 2022/7/1 11:37
     */
    List<Notice> listNoticeBySectionId(NoticeListDTO noticeListDTO);

    /**
     * @Description: 根据项目ID查询公告
     *
     * @author yuezheng
     * @param projectId
     * @return java.util.List<com.hb.core.pojo.project.notice.entity.Notice>
     * @date 2022/6/30 17:27
     */
    List<Notice> findNoticeByProjectId(Long projectId);
}
